home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / ASM / ATSTATUS.ASM next >
Assembly Source File  |  2000-09-26  |  3KB  |  200 lines

  1. code   segment
  2.  
  3.  assume cs:code,ds:code
  4.  org 0
  5.  
  6. jIntNum   equ 4
  7. keyIntNum equ 16h
  8.  
  9. befehl    equ 2
  10. status    equ 3
  11. end_adr   equ 14
  12.  
  13. reg_bp    equ 22
  14. reg_sp    equ 20
  15. reg_ss    equ 18
  16. reg_cs    equ 16
  17. reg_es    equ 14
  18. reg_di    equ 12
  19. reg_ds    equ 10
  20. reg_si    equ 8
  21. reg_dx    equ 6
  22. reg_cx    equ 4
  23. reg_bx    equ 2
  24. reg_ax    equ 0
  25.  
  26. reg_dl    equ 6
  27. reg_cl    equ 4
  28. reg_bl    equ 2
  29. reg_al    equ 0
  30.  
  31. reg_dh    equ 7
  32. reg_ch    equ 5
  33. reg_bh    equ 3
  34. reg_ah    equ 1
  35.  
  36. erst_b    equ this byte
  37.  
  38.  
  39. umbtreiber:
  40.          dw -1,-1             ; DOS-Intern
  41.          db 0,80h             ; Flags
  42. soffset  dw offset strat      ; Strategie-Routine
  43. ioffset  dw offset intr       ; Interrupt-Routine
  44.          db "$ATSTAT0"        ; UMB-Kennung
  45.  
  46.  
  47. old_int      equ this dword
  48. old_int_ofs  dw 0
  49. old_int_seg  dw 0
  50.  
  51.  
  52. dummy  proc far
  53.  ret
  54. dummy  endp
  55.  
  56.  
  57. new_int  proc far
  58.  push ax
  59.  push bx
  60.  push cx
  61.  push dx
  62.  push di
  63.  push si
  64.  push bp
  65.  push ds
  66.  push es
  67.  pushf
  68.  
  69.  push cs
  70.  pop ds
  71.  ; -------------------
  72.  
  73.  mov ah,1
  74.  mov al,jIntNum
  75.  int 0b
  76.  cmp di,-1
  77.  je weiter
  78.  
  79.  cmp es:b[di+2],255
  80.  jne weiter
  81.  
  82.  mov ds,040
  83.  
  84.  mov dl,es:b[di]
  85.  or ds:b[017h],dl
  86.  mov dl,es:b[di+1]
  87.  or ds:b[018h],dl
  88.  
  89. weiter:
  90.  ; -------------------
  91.  popf
  92.  pop es
  93.  pop ds
  94.  pop bp
  95.  pop si
  96.  pop di
  97.  pop dx
  98.  pop cx
  99.  pop bx
  100.  pop ax
  101.  jmp [cs:old_int]
  102. new_int  endp
  103.  
  104.  
  105.  ; ---------------------------
  106. ende  equ this byte
  107.  
  108. db_ptr      dw (?),(?)
  109.  
  110. strat  proc far
  111.  mov cs:db_ptr,bx
  112.  mov cs:db_ptr+2,es
  113.  ret
  114. strat  endp
  115.  
  116.  
  117. intr   proc far
  118.  push ax
  119.  push bx
  120.  push cx
  121.  push dx
  122.  push di
  123.  push si
  124.  push bp
  125.  push ds
  126.  push es
  127.  pushf
  128.  
  129.  push cs
  130.  pop ds
  131.  
  132.  les di,dword ptr db_ptr
  133.  mov bl,es:[di+befehl]
  134.  cmp bl,0
  135.  je bc_okay
  136.  
  137.  mov ax,8003h
  138.  jmp short intr_end
  139.  
  140. bc_okay:
  141.  call init
  142.  
  143. intr_end  label near
  144.  or ax,0100h
  145.  mov es:[di+status],ax
  146.  
  147.  popf
  148.  pop es
  149.  pop ds
  150.  pop bp
  151.  pop si
  152.  pop di
  153.  pop dx
  154.  pop cx
  155.  pop bx
  156.  pop ax
  157.  ret
  158. intr  endp
  159.  
  160.  
  161. init   proc near
  162.  mov word ptr es:[di+end_adr],offset ende
  163.  mov word ptr es:[di+end_adr+2],cs
  164.  
  165.  mov dx,offset initm
  166.  mov ah,9 
  167.  int 21h
  168.  
  169.  mov ah,35h
  170.  mov al,keyIntNum
  171.  int 21h
  172.  mov old_int_ofs,bx
  173.  mov old_int_seg,es
  174.  
  175.  mov ah,25h
  176.  mov al,keyIntNum
  177.  mov dx,offset new_int
  178.  int 21h 
  179.  
  180.  mov dx,offset sokay
  181.  mov ah,9
  182.  int 21h 
  183.  
  184.  mov ioffset,offset dummy
  185.  mov soffset,offset dummy
  186.  
  187.  xor ax,ax
  188.  ret
  189. init  endp
  190.  
  191.  
  192.  ; ************ Installationsmeldungen beim Start
  193. initm db "ATKeyboard Keyboard Status. Copyright (C) 1994 by Thomas Dreibholz",13,10
  194.       db "All rights reserved worldwide.",13,10,"$"    
  195. sokay db "Treiber wurde erfolgreich installiert.",13,10,10,"$"
  196.  
  197. code  ends
  198.  end
  199.  
  200.